<?php
class AuthController extends \BaseController {
 
    /**
     * Attempt user login
     */
    public function doLogin() {
        $response = array(
            'error' => true,
            'messages' => 'undefinded error'
        );

        // información del usuario para la autenticación.
        $validator = $this->getLoginValidator();

        if ($validator->passes()) {
            $remember = false; // por defecto no recuerda el usuario autenticado.
            $credentials = $this->getLoginCredentials();

            // se verifica si el usuario fue autenticado
            if (Auth::attempt($credentials, $remember)) {
                // se retorna la información del usuario cuando este es autenticado.
                $response = array(
                    'error' => false,
                    'user' => Auth::User()
                );
            } else {
                $response['messages'] = 'The username or password entered is incorrect';
            }
        } else {
            $response['messages'] = $validator->messages();
        }

        return Response::json($response);
    }

    /**
    *   Función responsable de validar las entradas para el login.
    *   @author Sebastián Lara <>
    *   @return Validator, objeto con el resultado de la validación.
    */
    protected function getLoginValidator() {
        // se capturan las credenciales para realizar la validación
        $credentials = $this->getLoginCredentials();

        // reglas para la validación
        $rules = array (
            'username' => 'required',
            'password' => 'required',
        );

        // mensajes personalizados en caso de error
        $messages = array (
            'required' => ':attribute is required.',
        );

        return Validator::make($credentials, $rules, $messages);
    }

    /**
    *   Función responsable de retornar las credenciales para realizar el login.
    *   @author Sebastián Lara <>
    *   @return array, arreglo con las credenciales para realizar el login.
    */
    protected function getLoginCredentials() {
        return [
            "username" => Input::get("username"),
            "password" => Input::get("password")
        ];
    }

    /**
    *   Función responsable de validar si una petición se esta haciendo por el 
    *   método post.
    *   @author Sebastián Lara <>
    *   @return boolean, true: cuando la petición es por el método 'POST', 
    *   false: en caso contrario
    */
    protected function isPostRequest() {
        return (Input::server("REQUEST_METHOD") == "POST");
    }
 
    
    public function doLogout() {
        //Desconctamos al usuario
        Auth::logout();
 
        return Response::json(
            array (
                'error'   => false,
                'message' => 'Session closed successfully'
            ),
            200
        );
    }
 
}
?>